package com.kun;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class Test03_Set {

    @Test
    public void testSet() {
        Jedis jedis = JedisUtils.getJedis();
        jedis.flushDB();

        //1. 添加集合
        jedis.sadd("set1", "a", "b", "c", "d", "e");    //添加元素a,b,c,d,e到集合set1
        jedis.smembers("set1").forEach(System.out::print);    //查看集合元素,输出: [a, b, c, d, e]
        System.out.println("\n"+jedis.sismember("set1", "a"));    //判断元素a是否在集合set1中,输出: true

        //2. 获取集合个数
        System.out.println(jedis.scard("set1"));    //获取集合set1的元素个数,输出: 5

        //3. 移除集合元素
        jedis.srem("set1", "a", "b", "c");    //移除集合set1中的元素a,b,c
        jedis.smembers("set1").forEach(System.out::print);    //查看集合元素,输出: [d, e]

        //4. 随机获取集合元素
        System.out.println("\n"+jedis.srandmember("set1"));    //随机获取集合set1中的一个元素,输出: d或e

        //5. 随机弹出集合元素
        System.out.println(jedis.spop("set1"));    //随机弹出集合set1中的一个元素,输出: d或e
        jedis.sadd("set1", "a", "b", "c", "d", "e");

        //6. 将集合元素移动到另一个集合
        jedis.smove("set1", "set2", "e");
        jedis.smembers("set1").forEach(System.out::print);
        System.out.println();
        jedis.smembers("set2").forEach(System.out::print);
        System.out.println();

        //7. 交集、并集、差集
        jedis.sadd("set2", "a", "b");//set2: [a, b, e], set1: [a,b,c,d]
        System.out.println(jedis.sinter("set1", "set2"));    //交集,输出: [a, b]
        System.out.println(jedis.sunion("set1", "set2"));   //并集,输出: [a, b, c, d, e]
        System.out.println(jedis.sdiff("set1", "set2"));    //差集,输出: [c, d]

        JedisUtils.closeJedis(jedis);
    }

}
